package com.yang.result;


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;

// 统一响应结果
@NoArgsConstructor
@AllArgsConstructor
@Data
@Accessors(chain = true)
// Serializable它的主要作用是允许对象被序列化和反序列化。
// 序列化是将对象转换为字节流的过程，以便可以将其存储在文件中或通过网络传输。
// 反序列化则是将字节流转换回对象的过程。
// 当一个类实现了 Serializable 接口时，它表明该类的实例可以被序列化和反序列化。
public class Result<T> implements Serializable {

    //业务状态码
    private Integer code;
    // 提示信息
    private String message;
    // 业务数据
    private T data;

    // 返回操作成功响应结果(返回数据)
    public static <E> Result<E> success(E data) {
        return new Result<>(0, "操作成功", data);
    }

    // 返回操作成功响应结果(无数据)
    public static <E> Result<E> success() {
        return new Result<>(0, "操作成功", null);
    }

    // 返回操作错误响应结果(返回提示信息)
    public static Result<?> error(String message) {
        return new Result<>(1, message, null);
    }
}
